package com.xywang.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

//统计网站在线人数：一个用户有一个session ，所以统计在线人数，说白了就是统计session
public class OnlineCountListener implements HttpSessionListener {
    // 监听：看你的一举一动
    // 创建session监听
    // 一旦创建session就会触发一次这个事件！
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {

        ServletContext ctx = httpSessionEvent.getSession().getServletContext();
        Integer onlinecount = (Integer) ctx.getAttribute("onlineCount");
        if(onlinecount==null){
            onlinecount= 1;
            ctx.setAttribute("onlineCount",onlinecount);
        }else{
            onlinecount++;
            ctx.setAttribute("onlineCount",onlinecount);
        }

        System.out.println("session创建-->id= "+httpSessionEvent.getSession().getId());
        System.out.println("onlinecount"+onlinecount);
    }

    // 销毁监听
    // 一旦销毁session就会触发一次这个事件！
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {

        ServletContext ctx = httpSessionEvent.getSession().getServletContext();
        Integer onlinecount = (Integer) ctx.getAttribute("onlineCount");
        onlinecount--;
        ctx.setAttribute("onlineCount",onlinecount);

        System.out.println("session销毁-->id= "+httpSessionEvent.getSession().getId());
        System.out.println("onlinecount"+onlinecount);
    }
}
